Selecting animation manipulators via rollover and dot manipulators

ABSTRACT

One embodiment of the present application includes an approach by which an animation system manipulates an animatable object. The animation system detects that a pointer device has positioned a pointer location at a first location, the first location coinciding with a first portion of geometry of the animatable object. The animation system indicates that a first manipulator associated with the first portion of geometry is tentatively selected. Prior to receiving a selection event from the pointer device, the animation system displays a representation of the first manipulator.

FIELD

The present disclosure relates to the field of computer animation and,in particular, to selecting animation manipulators via rollover and dotmanipulators.

BACKGROUND Description of the Related Art

In computer animation, a 3D object, such as an animatable character, isfirst modeled, via a static 3D mesh to represent the 3D object. Themodeled 3D object is then bound, or attached, to a system of joints,bones, and control handles to prepare the object for animation, aprocess known as rigging. Once the object is rigged, one or moreanimators define motions of the various joints, bones, and controlhandles to cause the rigged object to perform a variety of motions asappropriate for the character, such as walking, running, crawling, andmotions of the mouth, as when smiling, laughing, or speaking.

To animate a 3D object, an animator typically performs many thousands ofmanipulations to cause the object to perform the various functions invarious scenes in a smooth and believable manner. These manipulationsare performed by selecting and moving various “manipulators,” where eachmanipulator causes a portion of the 3D object to change position,rotation, scale up or down, and so on. Typically, manipulators appear asthree-dimensional (3D) user interface elements with handles that may bemoved or dragged to change various parameters associated with thecorresponding manipulator. In general, the animator selects a portion ofgeometry of the 3D object via a graphical user interface associated withan animation application program, where the selection causes one or moremanipulators associated with the geometry to appear. The animator thenselects one of the manipulators and performs a function on themanipulator, such as dragging, in order to move, rotate, or scale theassociated portion of geometry. The animator continues this process foreach keyframe in the animation to cause the 3D object to move in thedesired manner.

One potential drawback with this approach is that multiple selectionsare needed for each movement of each portion of geometry, which, in theaggregate, makes the animation of a 3D object a fairly slow and tediousprocess. For example, to adjust a particular manipulator handleassociated with a portion of geometry, an animator would first have toclick on the portion of geometry, causing the manipulator to becomevisible. The animator would then have to click on a particularmanipulator handle, and then drag the handle as desired. That is, twoclick selects would be required before the manipulator handle could bedragged. Further, because of the significant quantity of selectionsduring animation, animators may experience fatigue or even repetitivestress injury (RSI). Another drawback with this approach is that theanimator does not see which manipulators correspond to a particularportion of the geometry until the geometry is first selected. As aresult, when an animator encounters an unfamiliar 3D object, theanimator starts by clicking on or otherwise selecting on variousportions of geometry in order to become familiar with the location andfunctions of each manipulator for each particular portion of geometry,thereby further slowing the actual animation process.

SUMMARY

One embodiment of the present application includes a method formanipulating an animatable object. The method includes detecting that apointer device has positioned a pointer location at a first location,the first location coinciding with a first portion of geometry of theanimatable object. The method further indicating that a firstmanipulator associated with the first portion of geometry is tentativelyselected. The method further, prior to receiving a selection event fromthe pointer device, displaying a representation of the firstmanipulator.

Other embodiments include, without limitation, a computer-readablestorage medium that includes instructions that enable a processing unitto implement one or more aspects of the disclosed methods as well as acomputing system configured to implement one or more aspects of thedisclosed methods.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the manner in which the above recited features of the disclosurecan be understood in detail, a more particular description of thedisclosure, briefly summarized above, may be had by reference toembodiments, some of which are illustrated in the appended drawings. Itis to be noted, however, that the appended drawings illustrate onlytypical embodiments of this disclosure and are therefore not to beconsidered limiting of its scope, for the disclosure may admit to otherequally effective embodiments.

FIG. 1 is a block diagram of an animation system, according to oneembodiment;

FIGS. 2A-2C illustrate a portion of an animatable 3D object, accordingto one embodiment;

FIGS. 3A-3C set forth a flow diagram of method steps for processing apointer device move event, according to one embodiment;

FIGS. 4A-4B set forth a flow diagram of method steps for processing apointer device click event, according to one embodiment;

FIG. 5 sets forth a flow diagram of method steps for selecting amanipulator from a group of associated manipulators, according to oneembodiment;

FIG. 6 sets forth a flow diagram of method steps for drawing one or moremanipulators on a graphical user interface, according to one embodiment;and

FIG. 7 illustrates an example computing system configured to processdot-based manipulators, according to one embodiment.

DETAILED DESCRIPTION

Embodiments presented herein provide techniques for displayingmanipulators in an animation system. In general, manipulators arecontrol handles whereby an animator or other user controls, ormanipulates, parameters associated with an animatable object (e.g., a 3Dmodel in a 3D space presented on a computing device), typically via agraphical user interface. Manipulators control various aspects of ananimatable object, including, without limitation, the size, position,orientation, shape, and rotation of the animatable object.

In particular, embodiments presented herein provide techniques for ananimation system to display standard, rollover, and dot manipulators inresponse to events preformed using a pointer device. A standardmanipulator is a manipulator that has been selected via a click or someother event associated with a pointer device. The standard manipulatorcan be selected via any technically feasible technique, including,without limitation, a press of a mouse or trackball button, a press of astylus on the surface of a digital drawing tablet, a press of a fingeron a touch screen, movement of a pointer over an area, etc. In someembodiments, upon selection of a standard manipulator, a user mayinteract with the manipulator to modify or otherwise manipulate thegeometry of an associated animatable object. The types of interactionoptions may be limited to a predefined set for a manipulator. Forexample, a particular manipulator may only allow movement of a piece ofgeometry along an x or y axis. Different manipulators may have differentsets of predefined interaction options. A rollover manipulator is amanipulator that has been tentatively selected via a move eventassociated with a pointer device. The rollover manipulator can beselected via any technically feasible technique, including, withoutlimitation, a movement of a mouse along a surface, a movement of astylus across the surface of a digital drawing tablet, a rolling of atrackball in a trackball device, or a movement of a finger along thesurface of a touch screen. A dot manipulator is a manipulator that isassociated with one or more other dot manipulators. The dot manipulatormay appear as a circle or sphere on a graphical user interface presentedto a user for editing an animatable object. In some embodiments, if apointer is positioned over any dot manipulator in a group of associateddot manipulators, each of the dot manipulators in the group aresimultaneously available for rollover or standard selection.

In one embodiment, a current position of the pointer device may betracked in relationship to portions of geometry and associatedmanipulators. As the pointer device moves to a location nearby aparticular portion of geometry, the animation system may highlight theportion of geometry. The animation system may also display a manipulator(e.g. a particular 3D user interface component) associated with theportion of geometry when the pointer device “rolls over” the portion ofgeometry. This manipulator is referred to herein as a rollovermanipulator. As the pointer device moves over different portions ofgeometry, different rollover manipulators may be displayed.

If a rollover manipulator is clicked on or otherwise selected using thepointer device, the animation system may promote the rollovermanipulator to a standard manipulator and highlight the standardmanipulator (indicating the manipulator has been selected and isactive). The system may also display handles associated with thestandard manipulator. The pointer device may be used to manipulate aportion of geometry via the handles of the manipulator, where amanipulator handle is a subcomponent of a manipulator that may bedragged or moved to adjust one or more parameters associated with the 3Dobject. As the pointer device moves to other portions of geometry,associated rollover manipulators may be displayed while the previouslyselected standard manipulator may continue to be displayed andhighlighted. Doing so allows the animator to observe what manipulatorsare available for each portion of geometry by moving a pointer to thatportion, without also having to first select a portion of geometry.

In another embodiment, a current position of the pointer device may betracked in relationship to portions of geometry and associatedmanipulators. As the pointer device moves over a particular portion ofgeometry, the animation system may highlight that portion of geometry inresponse. The animation system may also determine that two (or more)manipulators are available for the highlighted portion of geometry. Forexample, the animation system may display a group of indicators (e.g.,circles or spheres), each representing a different manipulator. Suchindicators are referred to herein as dot manipulators. As the pointermoves over as each indicator, the associated dot manipulator may bepromoted to the current rollover manipulator. The current rollovermanipulator is processed as described above. In this fashion, theanimator may be able to observe various groups of manipulators for eachportion of geometry by moving the pointer device without having to firstselect a portion of geometry.

In yet another embodiment, a current position of the pointer device maybe tracked in relationship to both the particular portion of geometry atthe current position of the pointer device, and also to other relatedportions of geometry and the manipulators associated with these otherrelated portions of geometry. As the pointer device moves over any oneof the related portions of geometry, the animation system may highlightone of the related portions of geometry that has been designated as theprimary portion of geometry in the group. The animation system may alsodetermine the total set of manipulators that are available for the allof the related portions of geometry. For example, the animation systemcould detect that the current position of the pointer device is over aportion of geometry within the lips of an animatable object, where thelips could be divided into six related portions of geometry: left,center, and right portions of the upper lip and left, center, and rightportions of the lower lip. The center portion of the upper lip could bedesignated as the primary portion of geometry for the pair of lips. Ifthe current position of the pointer device is over any of the sixportions of geometry included in the pair of lips, then the centerportion of the upper lip is highlighted, and dot manipulators aredisplayed for each manipulator associated with any of the six relatedportions of geometry.

In yet another embodiment, dot manipulators may be promoted to rollovermanipulators according to one of two modes, as determined via a userselection or user preference. In a first mode, a dot manipulator ispromoted to a rollover manipulator as soon as the pointer device rollsover a location that intersects with an indicator associated with thedot manipulator. In this mode, manipulators are displayed and removed asthe pointer moves over the various indicators associated with a group ofdot manipulators. If the rollover manipulator is clicked on, then therollover manipulator is promoted to a standard manipulator. In a secondmode, a dot manipulator is not promoted to a rollover manipulator, as inthe first mode, but the dot manipulator is promoted directly to astandard manipulator after the dot manipulator is clicked on orotherwise selected. In this mode, only the indicators are displayed asthe pointer moves over the dot manipulators in a group. The standardmanipulator is not displayed until a dot manipulator is actually clickedon.

By tracking standard selections and rollover selections of standardmanipulators, rollover manipulators, and dot manipulators, thetechniques described herein provide a system for animators toefficiently manipulate various parameters for portions of geometryincluded in an animatable object, while reducing the quantity of pointerdevice clicks needed to perform the animation.

Note, embodiments of the present disclosure are described below using astandalone animation system as an example of an application whichemploys dot manipulators in an animation application program. Asdescribed, the animation system displays standard, rollover, and dotmanipulators in response to move events and click events associated witha pointer device. One of ordinary skill in the art will recognize thatembodiments described herein may be adapted to work with a variety ofcomputing applications which support animation of 3D objects viamanipulators. For example, embodiments may be used with virtualizedsystems and infrastructure, stand-alone computing appliances, networkdevices, data storage devices, and unconventional network-aware devicescapable of performing one or more of the techniques described herein.

In the following description, numerous specific details are set forth toprovide a more thorough understanding of the present disclosure.However, it will be apparent to one of skill in the art that the presentdisclosure may be practiced without one or more of these specificdetails.

FIG. 1 is a block diagram of an animation system 100, according to oneembodiment. As shown, the animation system includes, without limitation,an event delivery engine 110, a move handler engine 120, a click handlerengine 130, a manipulator picking engine 140, selection state data 150,a pick prioritization engine 160, a geometry picking engine 170, amanipulator display engine 180, and a dot manipulator display engine190.

The event delivery engine 110 detects and reports various on theoccurrence of events associated with an input device or an outputdevice. For example, the event delivery engine 110 could detect andreport move events, click events, key-press events, and paint events.

A move event occurs when a pointer device changes position, where apointer device includes, without limitation, a mouse, a digital drawingtablet, a touch screen, and a trackball device. A move event includes,without limitation, a movement of a mouse along a surface, a movement ofa stylus across the surface of a digital drawing tablet, a rolling of atrackball in a trackball device, or a movement of a finger along thesurface of a touch screen. A click event occurs when a button or otheractuator on a pointer device is actuated. A click event includes,without limitation, a press of a mouse or trackball button, a press of astylus on the surface of a digital drawing tablet, or a press of afinger on a touch screen. A key-press event occurs when a key on akeyboard is pressed.

A paint event occurs when an application requests that graphical data bewritten to a display memory. The contents of the display memory are thenretrieved and displayed on a display device. A paint event includes,without limitation, a request to draw a portion of geometry or agraphical user interface element to the display memory. In oneembodiment, paint events may result in manipulators and dot manipulatorsbeing displayed on the display device. The event delivery engine 110transmits move events to the move handler engine 120, click events tothe click handler engine 130, and paint events to the manipulatordisplay engine 180 and the dot manipulator display engine 190. In someembodiments, various engines in the animation system 100 subscribe toone or more of the events detected and reported by the event deliveryengine 110. For example, the move handler engine 120 could subscribe tomove events, the click handler engine 130 could subscribe to clickevents, and the manipulator display engine 180 and the dot manipulatordisplay engine 190 could subscribe to paint events.

The move handler engine 120 receives move events from the event deliveryengine 110. The move handler engine 120 detects when, as a result of amove event, a current position associated with the pointer device isover either a particular portion of geometry or over a manipulator,where a manipulator includes a standard manipulator or a dotmanipulator. Such an occurrence is referred to herein as a rollover,where the current pointer location “rolls” over a portion of geometry ora manipulator. A rollover where the current pointer location is over acentral region of a portion of geometry is considered to be a rolloverselection of that portion of geometry. A rollover where the currentpointer location is over a perimeter region of a portion of geometry isconsidered to be a tentative rollover selection of that portion ofgeometry. Stated another way, if the move handler engine 120 detectsthat the current pointer location has rolled over a central region or aperimeter region of a particular portion of geometry, then that portionof geometry is said to be rollover selected or tentatively rolloverselected, respectively. The move handler engine 120 determines, based onreceived move events, which standard manipulators and dot manipulatorsto select and display. That is, when the current pointer location rollsover a portion of geometry, the move handler engine 120 determineswhether and what types of manipulators to display.

In some embodiments, determining which manipulators to display may bebased in part on user settings or preferences. In such embodiments, auser may select to display standard manipulators, dot manipulators, orboth standard and dot manipulators. The move handler engine 120transmits information about geometry and manipulators to the manipulatorpicking engine 140, the pick prioritization engine 160, and the geometrypicking engine 170 for processing and receives results of thisprocessing from the engines. The move handler engine 120 storesinformation regarding tentative selections in the selection state data150.

The click handler engine 130 receives click events from the eventdelivery engine 110. The click handler engine 130 detects when anactuator of a pointer device has been activated at a position that isover either a particular portion of geometry or over a manipulator,(e.g., a standard manipulator or a dot manipulator). Such an occurrenceis referred to herein as a click event, where the pointer device clickson or otherwise selects a portion of geometry or a manipulator. As usedherein, the terms “click on” and “select” are used interchangeably. Theportion of geometry or manipulator can be selected via any technicallyfeasible technique, including, without limitation, a press of a mouse ortrackball button, a press of a stylus on the surface of a digitaldrawing tablet, or a press of a finger on a touch screen. A clickselection is considered to be a standard selection of an associatedportion of geometry. Stated another way, if the click handler engine 130detects that the pointer device has click selected a particular portionof geometry (referred to herein as a standard selection), then thatportion of geometry is said to be selected. The click handler engine 130determines, based on received click events, which standard manipulatorsand dot manipulators to select and display on the display device. Whenthe user clicks on a portion of geometry, the click handler engine 130determines whether and what types of manipulators to display.

In some embodiments, such a determination of may be based on usersettings or user preferences. For example, a user could specifypreferences for selecting and displaying standard manipulators, dotmanipulators, or both standard and dot manipulators. The click handlerengine 130 transmits information about geometry and manipulators to themanipulator picking engine 140, the pick prioritization engine 160, andthe geometry picking engine 170 for processing, and receives results ofthis processing from the engines. The click handler engine 130 storesinformation regarding standard selections in the selection state data150.

The manipulator picking engine 140 receives a particular pixel locationof interest, typically the current pointer location, from the movehandler engine 120 or the click handler engine 130. The manipulatorpicking engine 140 determines, for the particular pixel location ofinterest, whether one or more manipulators has been drawn at theparticular pixel location. If two or more manipulators intersect theparticular pixel location, the manipulator picking engine 140 comparesdepth information, also referred to herein as z information, associatedthe two or more manipulators in order to determine which manipulator isclosest to the viewpoint of a given virtual display camera within the 3Dspace that includes the animatable object.

The selection state data 150 stores information regarding standardselections, rollover selections, and tentative rollover selections, asdetermined by the move handler engine 120 and the click handler engine130. The standard selection refers to one or more manipulators that havebeen clicked on or otherwise selected using the pointer device. Rolloverselection information refers to a manipulator, where the pointer deviceis directly over an manipulator associated with a particular portion ofgeometry. Tentative rollover selection information refers to amanipulator that is tentatively selected when the pointer device is overan edge region of a portion of geometry, but the pointer device is notdirectly over the associated manipulator itself.

In one example, the pointer could be positioned such that the pointer isnot over any manipulator or portion of geometry. This condition would bereflected in the selection state data 150 as a state where standardselection, rollover selection, and tentative rollover selection are allcleared. If the pointer moves to a position over an edge area of aportion of geometry, but not directly over a manipulator, the tentativerollover selection of the selection state data 150 would be updated toshow that a corresponding manipulator is tentatively selected viarollover. If the pointer now moves to a position directly over amanipulator associated with the portion of geometry, the tentativerollover selection of the selection state data 150 would be cleared andthe rollover selection of the selection state data 150 would be updatedto show that a corresponding manipulator is selected via rollover. Ifthe pointer device now clicks on or otherwise selects the manipulatorassociated with the portion of geometry, the tentative rolloverselection and rollover selection of the selection state data 150 wouldboth be cleared and the standard selection of the selection state data150 would be updated to show that a corresponding manipulator isselected via a click event.

In another example, the pointer device could move directly from aposition where the pointer is not over any manipulator or portion ofgeometry to a position directly over a manipulator associated with aportion of geometry. In such cases, the selection state data 150 wouldbe updated from a condition where standard selection state, rolloverselection state, and tentative rollover selection state are all clear toa condition where the rollover selection is set to indicate themanipulator. In such a case, the selection state data 150 wouldtransition directly from an all clear state to a rollover selectionstate without first passing through the tentative rollover selectionstate.

The pick prioritization engine 160 receives a particular pixel locationof interest from the move handler engine 120 or the click handler engine130. If two or more manipulators intersect at the particular pixellocation, the pick prioritization engine 160 determines whichmanipulator to activate. As described herein, the pick prioritizationengine 160 determines which manipulator to activate based on the depthinformation for each manipulator as well as the type of manipulator(e.g., standard manipulators, rollover manipulators, and dotmanipulators). In one example, standard manipulators could be preferredover rollover manipulators, and, in turn, rollover manipulators could bepreferred over dot manipulators. In some embodiments, if two dotmanipulators intersect at a particular pixel location, the pickprioritization engine 160 may select the smaller of the two dotmanipulators. In this way, when two dot manipulators are centered on thesame pixel location, the selection region forms a “bullseye” patternwhere selecting a pixel in the center region of the bullseye may selectthe smaller of the two dot manipulators. Selecting a pixel in thering-shaped region just outside of this center region and still withinthe bounds of the larger dot manipulator may select the larger of thetwo dot manipulators.

The geometry picking engine 170 receives a particular pixel location ofinterest from the move handler engine 120 or the click handler engine130. The geometry picking engine 170 determines, for the particularpixel location of interest, whether one or more portions of geometry hasbeen drawn at the particular pixel location. Typically, the particularpixel location is a pixel location corresponding to the current pointerlocation. If two or more portions of geometry intersect the particularpixel location, the geometry picking engine 170 compares depthinformation, also referred to herein as z information, associated withthe two or more portions of geometry in order to determine which portionof geometry is closest to the surface of the display device.

The manipulator display engine 180 receives paint events from the eventdelivery engine 110. From these paint events, the manipulator displayengine 180 determines how to draw corresponding one or more standardmanipulators, including how the one or more manipulators appear on thegraphical user interface of an animation application program. Forexample, a move manipulator could appear as a ring near the center ofthe manipulator with two arrows at right angles to each other. The twoarrows would correspond to movement of the associated portion ofgeometry in a two-dimension space defined by the two arrows. Uponreceiving a paint event, the manipulator display engine 180 retrievesinformation from the selection state data 150 to determine which, ifany, of one or more standard manipulators to display. Based on theselection state data, the manipulator display engine 180 determines thespecific manipulator to display, a location where to draw themanipulator in 3D space relative the associated animatable object, and agraphical representation appropriate for the particular manipulator.

The dot manipulator display engine 190 receives paint events from theevent delivery engine 110. From these paint events, the dot manipulatordisplay engine 190 determines how to draw corresponding one or more dotmanipulators, including how the one or more manipulators appear on thegraphical user interface of an animation application program. Forexample, several dot manipulators could appear for a particular portionof geometry, corresponding to standard manipulators that controlmovement, rotation, or scale of the associated portion of geometry. Uponreceiving a paint event, the dot manipulator display engine 190retrieves information from the selection state data 150 to determinewhich, if any, of one or more dot manipulators to display. Based on theselection state data, the dot manipulator display engine 190 determinesthe specific dot manipulators to display, a location where to draw thedot manipulators in display memory, and a graphical representationappropriate for the particular dot manipulators.

FIGS. 2A-2C illustrate a portion of a 3D object, according to oneembodiment. As shown in FIG. 2A, 3D object 200 includes various portionsof geometry, such as portion of geometry 202. The pointer location, orcursor, 204 is placed over the portion of geometry 202 at a pointassociated with manipulator 206. The manipulator 206 and associatedhandles 208, 210, and 212 may be highlighted as soon as the pointer 204moves across or “rolls over” the portion of geometry 202. Themanipulator handles 208, 210, and 212 control parameters associated withthe portion of geometry 202. For example, selecting and draggingmanipulator handle 208 could move the portion of geometry 202 in ahorizontal direction, selecting and dragging manipulator handle 210could move the portion of geometry 202 in a vertical direction, andselecting and dragging manipulator handle 212 could change a differentparameter associated with the portion of geometry 202. Selecting anddragging the manipulator 206 could move the portion of geometry 202simultaneously in a vertical direction and a horizontal direction.

As shown in FIG. 2B, 3D object 220 includes various portions ofgeometry, such as portion of geometry 222 and 228. In this example, themanipulator 224 has been clicked on and the pointer location 226 has nowrolled over the manipulator 230 associated with portion of geometry 228.As a result, both manipulators 224 and 230 are displayed and bothportions of geometry 222 and 228 are highlighted. Manipulator 224 andportion of geometry 222 are associated with a standard selection,indicating the portion of geometry 222 has been clicked on. Manipulator230 and portion of geometry 228 are associated with a rolloverselection, indicating the portion of geometry 228 has been rolled over.Manipulator 230 is associated three manipulator handles 232, 234, and236.

As shown in FIG. 2C, 3D object 220 includes various portions ofgeometry, such as portion of geometry 244. In this example, the portionof geometry 244 is associated with a group of dot manipulators 246, 254,256, 258, 260, and 262. Because the pointer location 242 is overmanipulator 246, the manipulator handles 248, 250, and 252 are alsodisplayed. The pointer location 242 is free to move over the dotmanipulators 246, 254, 256, 258, 260, and 262, while the dotmanipulators 246, 254, 256, 258, 260, and 262 continue to be displayed.If the pointer location 242 is over one of the dot manipulators 246,254, 256, 258, 260, and 262, then the corresponding manipulator handlesare also displayed. Dot manipulators 254 and 260 are shown as “bullseye”indicators to illustrate that each of these dot manipulators 254 and 260each include two actuators for two separate dot manipulators. Selectingthe center region selects the smaller of the two dot manipulators whileselecting the ringed region just outside of the center region selectsthe larger of the two dot manipulators.

Various techniques for selecting and displaying the manipulatorsillustrated in FIG. 2 are now described. Move events are detected andprocessed in order to determine whether a rollover selection or atentative rollover selection is indicated, as described in conjunctionwith FIGS. 3A-3C. Rollover selections and tentative rollover selectionscause one or more rollover manipulators or dot manipulators to bedisplayed. Such manipulators provide an animator with the ability tochange animation parameters without having to first click on orotherwise select a portion of geometry. Click events are detected andprocessed in order to determine whether a standard selection isindicated, as described in conjunction with FIGS. 4A-4B. Standardselections cause one or more standard manipulators or dot manipulatorsto be displayed. Such manipulators provide an animator with the abilityto change animation parameters after clicking on a portion of geometry.When a move event or click event is associated with a pointer locationthat intersects with multiple manipulators, the pick prioritizationengine 160 determines which one of the multiple manipulators is thehighest priority manipulator according to a defined relative priorityorder, as described in conjunction with FIG. 5. When a paint event isdetected, one or more standard manipulators, rollover manipulators, anddot manipulators are displayed, as described in conjunction with FIG. 6.The determination as to which manipulators to display is based at leastin part on the standard selection, rollover selection, and tentativerollover selection information stored in the selection state data 150.

FIGS. 3A-3C illustrate a method 300 for processing a move event,according to one embodiment. Although described in conjunction with thesystems of FIGS. 1 and 7, persons of ordinary skill in the art willunderstand that any system configured to perform the method steps, inany order, is within the scope of the present disclosure.

As shown, method 300 begins at step 302, where the move handler engine120 detects a pointer device move event. In one embodiment, the movehandler engine 120 detects the pointer device move event by receivingnotification of the device move event from the event delivery engine110. The move handler then determines whether the move event representsa rollover selection of a manipulator. At step 304, the move handlerengine 120 determines whether a manipulator is under a particular pixellocation of interest, typically the current pointer location. In someembodiments, the move handler engine 120 determines whether amanipulator is under the pointer by sending a request to the manipulatorpicking engine 140 to return the set of manipulators at the currentpoint location. If there is a manipulator under the pointer, then themove of the pointer to the current location represents a rollover. Themethod 300 proceeds to step 306, where the move handler engine 120determines a highest priority manipulator of the one or moremanipulators that intersect at the current pointer location. In someembodiments, the move handler engine 120 determines which manipulator isthe highest priority manipulator by sending a request to the pickprioritization engine 160 to return the highest priority manipulator atthe current pointer location.

At step 308, the move handler engine 120 determines whether the highestpriority manipulator is a dot manipulator. If the highest prioritymanipulator is a dot manipulator, then the method proceeds to step 310,where the move handler engine 120 determines whether rollovermanipulators are enabled. In one embodiment, rollover manipulators maybe enabled or disabled by setting a user setting or a user preference.If rollover manipulators are enabled, then the method proceeds to step312, where the move handler engine 120 sets the rollover selection inthe selection state data 150 to link the rollover selection with theportion of geometry associated with the dot manipulator at the currentpointer location. Setting the rollover selection indicates that theassociated dot manipulator is to be drawn into the display memory. Atstep 314, the move handler engine 120 clears the tentative rolloverselection in the selection state data 150. In some embodiments, atentative rollover selection may have been previously set if the pointerlocation is placed over the edge of a portion of geometry that has anassociated dot manipulator, but not over the dot manipulator itself.Because the rollover selection has now been set, there is no longer aneed to retain a previous tentative rollover selection, if any.

At step 316, the move handler engine 120 determines whether the highestpriority manipulator is either a dot manipulator or a rollovermanipulator. If the highest priority manipulator is either a dotmanipulator or a rollover manipulator, then the method proceeds to step318, where the move handler engine 120 highlights the portion ofgeometry associated with the manipulator, to visually identify theportion of geometry. This step ensures that the rollover or dotmanipulator is correctly highlighted, even if the current pointerposition is not over the associated portion of geometry. At step 324,the move handler engine 120 sets a highlighted appearance for themanipulator itself. The method 300 then terminates.

Returning to step 316, if the highest priority manipulator is neither adot manipulator nor a rollover manipulator, then the highest prioritymanipulator is a standard manipulator (e.g. a manipulator selected via amouse click). Such a standard manipulator takes precedence over bothrollover manipulators and dot manipulators. Therefore, the methodproceeds to step 320, where the move handler engine 120 clears therollover selection in the selection state data 150 based on the currentpointer location of the pointer device. At step 322, the move handlerengine 120 clears the tentative rollover selection in the selectionstate data 150. At step 324, the move handler engine 120 sets ahighlighted appearance for the manipulator. The method 300 thenterminates.

Returning to step 310, if rollover manipulators are not enabled, thenthe method proceeds to step 316, described above.

Returning to step 308, if the highest priority manipulator is not a dotmanipulator, then the method proceeds to step 316, described above.

Returning to step 304, if there is not a manipulator under the pointer,then the method 300 proceeds to step 326, where the move handler engine120 determines whether any portion of geometry is under the currentpointer location. In some embodiments, the move handler engine 120 maysend a request to the geometry picking engine 170 to obtain the portionof geometry at the current pointer location. If more than one portion ofgeometry intersects with the current pointer location, then the geometrypicking engine 170 returns the portion of geometry closest to thesurface of the display, based on depth information. If a portion ofgeometry is under the pointer, then the method proceeds to step 330,where the move handler engine 120 determines whether rollovermanipulators are enabled. If so, then at step 332, the move handlerengine 120 determines whether the current pointer location is over a dotmanipulator associated with the portion of geometry. If so, then at step334, the move handler engine 120 sets the rollover selection in theselection state data 150 based on the location of the current pointerlocation. At step 336, the move handler engine 120 clears the tentativerollover selection in the selection state data 150. At step 338, themove handler engine 120 sets a highlighted appearance on the portion ofgeometry. The method 300 then terminates.

Returning to step 332, if the current pointer location is not over alocation where a dot manipulator associated with the portion of geometrywould be displayed, then at step 340, the move handler engine 120 sets atentative rollover selection in the selection state data 150. At step338, the move handler engine 120 sets a highlighted appearance on theportion of geometry. The method 300 then terminates.

Returning to step 330, if rollover manipulators are not enabled, thenthe method 300 proceeds to step 338, described above.

Returning to step 326, if no portion of geometry is under the pointer,then the current pointer location does not intersect any manipulator orportion of geometry. The method proceeds to step 328, where the movehandler engine 120 clears the highlighted appearance for the portion ofgeometry, so no portion of geometry is highlighted. In some embodiments,if the current pointer position is completely outside of the view areafor the animation application program, then the move handler engine 120may also clear all rollover and tentative rollover manipulators. Themethod 300 then terminates.

FIGS. 4A-4B illustrate a method 400 for processing a click event,according to one embodiment. Although described in conjunction with thesystems of FIGS. 1 and 7, persons of ordinary skill in the art willunderstand that any system configured to perform the method steps, inany order, is within the scope of the present disclosure.

As shown, method 400 begins at step 402, where the click handler engine130 detects a pointer device click event. In one embodiment, the clickhandler engine 130 detects the pointer device move event by receivingnotification of the device click event from the event delivery engine110. At step 404, the click handler engine 130 determines whether amanipulator is under the pointer location associated with the clickevent. In some embodiments, the click handler engine 130 determineswhether a manipulator is under the pointer by sending a request to themanipulator picking engine 140 to return the set of manipulators at thecurrent pointer location. If a manipulator is under the pointer, then atstep 406, the click handler engine 130 determines the manipulator underthe clicked location (if more than one) that has the highest priority.In some embodiments, the click handler engine 130 determines whichmanipulator is the highest priority manipulator by sending a request tothe pick prioritization engine 160 to return the highest prioritymanipulator at the current pointer location.

At step 408, the click handler engine 130 determines whether the highestpriority manipulator is a dot manipulator. If so, then the click handlerengine 130 promotes the dot manipulator into a standard manipulator(step 410). Step 410 corresponds to the mode where a dot manipulatordoes not become a standard manipulator until clicked on. At step 412,the click handler engine 130 identifies a default manipulator handle foran associated portion of geometry, as specified in the rigging data.This determination, in turn, controls which parameter is adjusted if thedot itself is moved on the display surface. At step 414, the defaultmanipulator is placed in drag mode, so that the related parameters maybe adjusted via a graphical user interface. At step 418, the clickhandler engine 130 sets the standard selection to be the defaultmanipulator established for the portion of geometry under the pointer.At step 420, the click handler engine 130 clears any rollover selectionthat was previously set, (e.g. in step 312 or step 344 of method 300 fora previous move event). At step 422, the click handler engine 130 clearsany tentative rollover selection that was previously set, (e.g. in step340 of method 300 for a previous move event). The method 400 thenterminates.

Returning to step 408, if the highest priority manipulator is not a dotmanipulator, the method proceeds to step 414, described above.

Returning to step 404, if there is no manipulator at the current pointlocation, then the click handler engine 130 determines whether anyportion of geometry is under the pointer location (step 416). If thereis no geometry under the pointer location, then the click event does notcorrespond to any manipulator or portion of geometry. The method 400terminates.

If, on the other hand, geometry is present under the pointer location,then the method 400 proceeds to step 418, described above.

FIG. 5 illustrates a method 500 for selecting a manipulator from a groupof associated manipulators, according to one embodiment. Althoughdescribed in conjunction with the systems of FIGS. 1 and 7, persons ofordinary skill in the art will understand that any system configured toperform the method steps, in any order, is within the scope of thepresent disclosure.

As shown, method 500 begins at step 502, where the pick prioritizationengine 160 determines whether any standard manipulators are present at acurrent pointer location. If so, the pick prioritization engine 160returns the standard manipulator that is closest to the display surface,based on depth information, as the highest priority manipulator at thecurrent pointer location (step 504). The method 500 then terminates.

Alternatively, if there are no standard manipulators at the currentpointer location, then the pick prioritization engine 160 determineswhether there are any rollover manipulators at the current pointerlocation (step 506). If there are any rollover manipulators at thecurrent pointer location, then the pick prioritization engine 160returns the rollover manipulator that is closest to the display surface,based on depth information, as the highest priority manipulator at thecurrent pointer location (step 508). The method 500 then terminates.

Returning to step 506, if no rollover manipulators are at the currentpointer location, then the pick prioritization engine 160 determineswhether there are any dot manipulators at the current pointer location(step 510). If so, the pick prioritization engine 160 returns the dotmanipulator that is smallest in size, as displayed on the displaysurface, based on depth information, as the highest priority manipulatorat the current pointer location (step 512). The method 500 thenterminates.

If, there are no dot manipulators at the current pointer location (atstep 510), then the pick prioritization engine 160 returns a null value,indicating that there are no manipulators at the current pointerlocation (step 514). The method 500 then terminates.

By performing the method steps as described above and shown in FIG. 5,the pick prioritization engine 160 gives the highest priority tostandard manipulators, followed by rollover manipulators, followed bydot manipulators. However, the pick prioritization engine 160 mayutilize other relative priority orders within the scope of the presentdisclosure.

FIG. 6 illustrates a method 600 for drawing one or more manipulators ona graphical user interface, according to one embodiment. Althoughdescribed in conjunction with the systems of FIGS. 1 and 7, persons ofordinary skill in the art will understand that any system configured toperform the method steps, in any order, is within the scope of thepresent disclosure.

As shown, method 600 begins at step 602, where the manipulator displayengine 180 and the dot manipulator display engine 190 detect a paintevent, indicating a command to draw manipulators and geometry into thedisplay memory. In one embodiment, the manipulator display engine 180and the dot manipulator display engine 190 detect the paint event byreceiving notification of the paint event from the event delivery engine110. At step 604, the manipulator display engine 180 draws manipulatorsfor each geometry item associated with an active standard selection,where a standard selection represents a manipulator selected in responseto a click event. At step 606, the manipulator display engine 180 drawsmanipulators for each geometry item associated with an active rolloverselection, where a rollover selection represents a manipulator selectedin response to a move event to a central region of a portion ofgeometry. At step 608, the dot manipulator display engine 190 draws dotmanipulators for each geometry item associated with a tentative rolloverselection, where a tentative rollover selection represents a manipulatorselected in response to a move event to a perimeter region of a portionof geometry.

At step 610, the dot manipulator display engine 190 identifies relatedportions of geometry associated with each portion of geometry instandard selection, rollover selection, and tentative rolloverselection, as identified in steps 604, 606, and 608, respectively.Typically, these related portions of geometry are specified in therigging information for the animatable object. For example, a pair oflips on an animatable character could include a left, center, and rightportion for each of the upper lip and lower lip, resulting in sixdistinct portions of geometry associated with the pair of lips. Therigging information for the pair of lips would identify each of the sixportions of geometry as related to each of the other five portions ofgeometry for the pair of lips. As a result, when the dot manipulatordisplay engine 190, at steps 604, 606, and 608, would draw themanipulators for any one of the five portions of geometry associatedwith the pair of lips, the dot manipulator display engine 190 would thenidentify, at step 610, the other five portions of geometry associatedwith the pair of lips. At step 612, the dot manipulator display engine190 draws dot manipulators for each of the identified related geometryitems. By displaying the dot manipulators for all related portions ofgeometry, an animator may move the current pointer location to any dotmanipulator for any portion of geometry in the group of related portionsof geometry without clicking on any portion of geometry. As a result,the animator need not perform a pointer device click for the solepurpose of selecting a portion of geometry or manipulator, although theanimator does click on a manipulator in order to drag, and thus adjust,that manipulator. In this way, the number of clicks performed by ananimator during the process of animation may be reduced. The method 600then terminates.

FIG. 7 illustrates an example computing system 700 configured to processdot-based manipulators, according to one embodiment. As shown, thecomputing system 700 includes, without limitation, a central processingunit (CPU) 705, a network interface 715, a network interface 715, amemory 720, and storage 730, each connected to a bus 717. The computingsystem 700 may also include an I/O device interface 710 connecting I/Odevices 712 (e.g., keyboard, display and mouse devices) to the computingsystem 700. Further, in context of this disclosure, the computingelements shown in computing system 700 may correspond to a physicalcomputing system (e.g., a system in a data center) or may be a virtualcomputing instance executing within a computing cloud.

The CPU 705 retrieves and executes programming instructions stored inthe memory 720 as well as stores and retrieves application data residingin the memory 730. The interconnect 717 is used to transmit programminginstructions and application data between the CPU 705, I/O devicesinterface 710, storage 730, network interface 715, and memory 720. Note,CPU 705 is included to be representative of a single CPU, multiple CPUs,a single CPU having multiple processing cores, and the like. And thememory 720 is generally included to be representative of a random accessmemory. The storage 730 may be a disk drive storage device. Althoughshown as a single unit, the storage 730 may be a combination of fixedand/or removable storage devices, such as fixed disc drives, removablememory cards, optical storage, network attached storage (NAS), or astorage area-network (SAN).

Illustratively, the memory 720 includes an event delivery engine 110, amove handler engine 120, a click handler engine 130, a manipulatorpicking engine 140, selection state data 150, a pick prioritizationengine 160, a geometry picking engine 170, a manipulator display engine180, and a dot manipulator display engine 190, as further described inconjunction with FIG. 1.

As described, embodiments presented herein provide techniques fordisplaying rollover manipulators and dot manipulators associated with ananimatable 3D object that appears within a window of an animationapplication program executing on an animation system. The rollovermanipulators and dot manipulators appear when a pointer is positionedover particular portions of geometry within a 3D object, without firstclicking on, or otherwise selecting, a portion of geometry. Variousmanipulators appear, are highlighted, and disappear as the position ofthe pointer device moves along the surface of the 3D object, evenwithout generating a click event. Advantageously, animation of the 3Dobject is accomplished with significantly fewer clicks of the pointerdevice. As a result, the animation process proceeds with greaterefficiency, and the risk of user fatigue and repetitive stress injurymay be reduced.

In the preceding, reference is made to embodiments of the invention.However, the invention is not limited to specific described embodiments.Instead, any combination of the following features and elements, whetherrelated to different embodiments or not, is contemplated to implementand practice the invention. Furthermore, although embodiments of theinvention may achieve advantages over other possible solutions and/orover the prior art, whether or not a particular advantage is achieved bya given embodiment is not limiting of the invention. Thus, the followingaspects, features, embodiments and advantages are merely illustrativeand are not considered elements or limitations of the appended claimsexcept where explicitly recited in a claim(s). Likewise, reference to“the invention” shall not be construed as a generalization of anyinventive subject matter disclosed herein and shall not be considered tobe an element or limitation of the appended claims except whereexplicitly recited in a claim(s).

Aspects of the present invention may be embodied as a system, method orcomputer program product. Accordingly, aspects of the present inventionmay take the form of an entirely hardware embodiment, an entirelysoftware embodiment (including firmware, resident software, micro-code,etc.) or an embodiment combining software and hardware aspects that mayall generally be referred to herein as a “circuit,” “module” or“system.” Furthermore, aspects of the present invention may take theform of a computer program product embodied in one or more computerreadable medium(s) having computer readable program code embodiedthereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples a computer readable storage medium include: anelectrical connection having one or more wires, a portable computerdiskette, a hard disk, a random access memory (RAM), a read-only memory(ROM), an erasable programmable read-only memory (EPROM or Flashmemory), an optical fiber, a portable compact disc read-only memory(CD-ROM), an optical storage device, a magnetic storage device, or anysuitable combination of the foregoing. In the current context, acomputer readable storage medium may be any tangible medium that cancontain, or store a program for use by or in connection with aninstruction execution system, apparatus or device.

The flowchart and block diagrams in the figures illustrate thearchitecture, functionality and operation of possible implementations ofsystems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. Each block of the block diagrams and/orflowchart illustrations, and combinations of blocks in the blockdiagrams and/or flowchart illustrations can be implemented byspecial-purpose hardware-based systems that perform the specifiedfunctions or acts, or combinations of special purpose hardware andcomputer instructions.

Embodiments of the invention may be provided to end users through acloud computing infrastructure. Cloud computing generally refers to theprovision of scalable computing resources as a service over a network.More formally, cloud computing may be defined as a computing capabilitythat provides an abstraction between the computing resource and itsunderlying technical architecture (e.g., servers, storage, networks),enabling convenient, on-demand network access to a shared pool ofconfigurable computing resources that can be rapidly provisioned andreleased with minimal management effort or service provider interaction.Thus, cloud computing allows a user to access virtual computingresources (e.g., storage, data, applications, and even completevirtualized computing systems) in “the cloud,” without regard for theunderlying physical systems (or locations of those systems) used toprovide the computing resources.

While the foregoing is directed to embodiments of the present invention,other and further embodiments of the invention may be devised withoutdeparting from the basic scope thereof, and the scope thereof isdetermined by the claims that follow.

What is claimed is:
 1. A method for manipulating an animatable object,the method comprising: detecting that a pointer device has positioned apointer location at a first location, the first location coinciding witha first portion of geometry of the animatable object; indicating that afirst manipulator associated with the first portion of geometry istentatively selected; and prior to receiving a selection event from thepointer device, displaying a representation of the first manipulator. 2.The method of claim 1, further comprising: detecting that the pointerdevice has selected the first location; and indicating that the firstmanipulator is selected.
 3. The method of claim 2, wherein indicatingthat the first manipulator is selected comprises causing therepresentation of the manipulator to be highlighted.
 4. The method ofclaim 2, further comprising: detecting that the pointer device haspositioned the pointer location at a second location, the secondlocation coinciding with a second portion of geometry associated withthe animatable object; and prior to receiving a selection event from thepointer device, indicating that a second manipulator associated with thesecond portion of geometry is tentatively selected.
 5. The method ofclaim 4, wherein indicating that the second manipulator associated withthe second portion of geometry is tentatively selected comprisesdisplaying a representation of the second manipulator.
 6. The method ofclaim 4, further comprising: detecting that the pointer device hasselected the second location; indicating that the first manipulator isselected; receiving input via the pointer device manipulating the secondmanipulator; and in response, modifying the second portion of geometryof the animatable object.
 7. The method of claim 2, further comprising:receiving input via the pointer device manipulating the firstmanipulator; and in response, modifying the first portion of geometry ofthe animatable object.
 8. The method of claim 1, further comprising:detecting that the pointer device has positioned the pointer location ata second location, the second location coinciding with a second portionof geometry associated with the animatable object; indicating that asecond manipulator associated with the first portion of geometry istentatively selected; and prior to receiving a selection event from thepointer device: removing the displayed representation of the firstmanipulator, and displaying a representation of the second manipulator.9. The method of claim 1, further comprising: detecting that the firstmanipulator is associated with one or more related manipulators; and foreach related manipulator included in the one or more relatedmanipulators, causing a representation of the related manipulator to bedisplayed.
 10. The method of claim 9, further comprising: detecting thatthe pointer device has positioned the pointer location at a secondlocation, the second location coinciding with a first relatedmanipulator included in the one or more related manipulators; andindicating that the first related manipulator is tentatively selected.11. The method of claim 1, wherein the representation of the firstmanipulator includes one or more manipulator handles, and furthercomprising: detecting that the pointer device has caused a secondlocation associated with the pointer location to coincide with amanipulator handle included in the one or more manipulator handles; andcausing the representation of the first manipulator to continue to bedisplayed.
 12. The method of claim 1, wherein the representation of thefirst manipulator includes one or more manipulator handles, and furthercomprising: detecting that the pointer device has caused a secondlocation associated with the pointer location to not coincide witheither the first portion of geometry or any manipulator handle includedin the one or more manipulator handles; and ceasing to display therepresentation of the first manipulator.
 13. A computer-readable storagemedium including instructions that, when executed by a processing unit,cause the processing unit to manipulate an animatable object, byperforming the steps of: detecting that a pointer device has positioneda pointer location at a first location, the first location coincidingwith a first portion of geometry of the animatable object; indicatingthat a first manipulator associated with the first portion of geometryis tentatively selected; and prior to receiving a selection event fromthe pointer device, displaying a representation of the firstmanipulator.
 14. The computer-readable storage medium of claim 13,further comprising: detecting that the pointer device has selected thefirst location; and indicating that the first manipulator is selected.15. The computer-readable storage medium of claim 14, wherein indicatingthat the first manipulator is selected comprises causing therepresentation of the manipulator to be highlighted.
 16. Thecomputer-readable storage medium of claim 14, further comprising:detecting that the pointer device has positioned the pointer location ata second location, the second location coinciding with a second portionof geometry associated with the animatable object; and prior toreceiving a selection event from the pointer device, indicating that asecond manipulator associated with the second portion of geometry istentatively selected.
 17. The computer-readable storage medium of claim16, wherein indicating that the second manipulator associated with thesecond portion of geometry is tentatively selected comprises displayinga representation of the second manipulator.
 18. The computer-readablestorage medium of claim 13, further comprising: detecting that thepointer device has positioned the pointer location at a second location,the second location coinciding with a second portion of geometryassociated with the animatable object; indicating that a secondmanipulator associated with the first portion of geometry is tentativelyselected; and prior to receiving a selection event from the pointerdevice: removing the displayed representation of the first manipulator,and displaying a representation of the second manipulator.
 19. Thecomputer-readable storage medium of claim 13, further comprising:detecting that the first manipulator is associated with one or morerelated manipulators; and for each related manipulator included in theone or more related manipulators, causing a representation of therelated manipulator to be displayed.
 20. The computer-readable storagemedium of claim 19, further comprising: detecting that the pointerdevice has positioned the pointer location at a second location, thesecond location coinciding with a first related manipulator included inthe one or more related manipulators; and indicating that the firstrelated manipulator is tentatively selected.
 21. The computer-readablestorage medium of claim 13, wherein the representation of the firstmanipulator includes one or more manipulator handles, and furthercomprising: detecting that the pointer device has caused a secondlocation associated with the pointer location to coincide with amanipulator handle included in the one or more manipulator handles; andcausing the representation of the first manipulator to continue to bedisplayed.
 22. A computing system, comprising: a memory that isconfigured to store instructions for a program; and a processor that isconfigured to execute the instructions for the program to manipulate ananimatable object, by performing an operation comprising: detecting thata pointer device has positioned a pointer location at a first location,the first location coinciding with a first portion of geometry of theanimatable object; indicating that a first manipulator associated withthe first portion of geometry is tentatively selected; and prior toreceiving a selection event from the pointer device, displaying arepresentation of the first manipulator.
 23. The computing system ofclaim 21, wherein the processor is further configured to execute theinstructions for the program to manipulate an animatable object, byperforming an operation comprising: detecting that the pointer devicehas selected the first location; and indicating that the firstmanipulator is selected.